import Vue from "vue";

import App from "./App.vue";

Vue.config.productionTip = false;

// 这块做一些基础组件的全局注册
// require.context  webpack 提供给我们的
const requireComponent = require.context(
  // 其组件目录的相对路径
  "./components",
  // 是否查询其子目录
  false,
  // 匹配基础组件文件名的正则表达式
  /Base[A-Z]\w+\.(vue|js)$/
);

// requireComponent.keys() ['./BaseButton.vue', './BaseInput.vue']
requireComponent.keys().forEach((fileName) => {
  // 获取组件配置
  const componentConfig = requireComponent(fileName);
  console.log(componentConfig);

  // 获取组件的组件,直接使用文件名
  const componentName = fileName
    .split("/")
    .pop()
    .replace(/\.\w+$/, "");

  // 全局注册组件
  Vue.component(
    componentName,
    // 如果这个组件选项是通过 `export default` 导出的，
    // 那么就会优先使用 `.default`，
    // 否则回退到使用模块的根。
    componentConfig.default || componentConfig
  );
});

new Vue({
  render: (h) => h(App),
}).$mount("#app");
